home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib06.dsk / TRAC SPENDING GRAPH.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  118 lines

  1. 10  REM :::::::::::::::::::::::
  2. 15  REM : TRAC SPENDING GRAPH :
  3. 20  REM :  BY: RUDY A. GUY    :
  4. 25  REM :  UPDATED 24-SEP-80  :
  5. 30  REM :  SHAPE TABLES ARE   :
  6. 35  REM : LOCATED AT $9100    :
  7. 40  REM : LENGTH  IS $01D6    :
  8. 45  REM :::::::::::::::::::::::
  9. 50  REM 
  10. 55 D$ =  CHR$(4)
  11. 60  ONERR  GOTO 560
  12. 65  PRINT D$;"BLOAD TRACSHAPES"
  13. 70  HOME 
  14. 75  HIMEM: 32000
  15. 80  VTAB 3: PRINT "******** SPENDING PROFILE GRAPH ********"
  16. 81  PRINT : PRINT "CONTROLS:": PRINT  TAB( 5)"ESC = DISPLAY TEXT SPENDING": PRINT  TAB( 5)"SPC = DISPLAY GRAPHICS": PRINT  TAB( 5)"RTN = RETURN TO TRAC MENU"
  17. 82  PRINT 
  18. 85 D$ =  CHR$(4)
  19. 90  POKE 232,0: POKE 233,145
  20. 95  DIM A(24),B(24),DR$(20),VLOC(20),BAL(24,12)
  21. 100  DIM WK(150,5),W$(100,6),W(24,13),A$(24),T(24)
  22. 105  GOSUB 465
  23. 110  FOR I = 1 TO 24:B(I) = B(I) *(159/2500):T(I) = B(I): NEXT 
  24. 115  REM  DRAW GRAPH
  25. 120  HGR2 
  26. 125  ROT= 0: SCALE= 1
  27. 130  FOR I = 1 TO 20:AM = AM +125:DR$(I) =  STR$(AM): IF  LEN(DR$(I)) < = 3  THEN DR$(I) = " " +DR$(I)
  28. 135  NEXT 
  29. 140 J = 160
  30. 145  FOR I = 1 TO 20:J = J -8:VLOC(I) = J: NEXT 
  31. 150 J = 0
  32. 155  HCOLOR= 3: HPLOT 32,0 TO 32,159 TO 279,159
  33. 160  FOR I = 152 TO 8  STEP  -8: HPLOT 32,I TO 34,I: NEXT 
  34. 165  GOSUB 300
  35. 170  FOR I = 1 TO 24:A(I) = 42 +J:J = J +9: NEXT 
  36. 175  FOR I = 1 TO 24: HPLOT A(I),157 TO A(I),158: NEXT 
  37. 180  GOSUB 360
  38. 185 A(0) = 32:B(0) = 0
  39. 195  FOR I = 1 TO 24
  40. 200  IF 159 -B(I) <0  THEN B(I) = 159: DRAW 27 AT (A(I) -3),0: CALL  -198: GOTO 210
  41. 205  DRAW 11 AT (A(I) -2),159 -B(I)
  42. 210  NEXT 
  43. 215  FOR I = 0 TO 23: HPLOT A(I),159 -B(I) TO A(I +1),159 -(B(I +1)): NEXT 
  44. 220  REM  DISPLAY TEXT
  45. 225  HOME 
  46. 230  FOR I = 1 TO 24: READ A$(I): NEXT 
  47. 235  DATA  1. AUTO,2. BOOKS/MAGAZINES,3. BUSINESS EXP.,4. CLOTHES (ADULT),5. CLOTHES (CHILDREN),6. DONATIONS,7. ELECTRICITY,8. ENTERTAINMENT,9. FOOD,10. GIFTS,11. HOBBIES (ADULT),12. HOBBIES (CHILDREN)
  48. 240  DATA 13. HOME-GAS  ,14. HOME-MAINT',15. INSURANCE,16. INVESTMENTS,17. LIQ/CIG'S,18. MORTGAGE,19. TELEPHONE,20. TAX-LOCAL,21. TAX-STATE,22. TAX-FEDERAL,23. VACATION,24. WATER
  49. 245  HOME : FOR I = 1 TO 24: IF  VAL(A$(I)) <10  THEN T = 2: GOTO 260
  50. 250 T = 1
  51. 255  IF  VAL(A$(I)) = 24  THEN  PRINT  TAB( T)A$(I);: HTAB 29: PRINT "$";:X$ =  STR$(T(I)/(159/2500)): GOSUB 525: HTAB (38 - LEN(X$)): PRINT X$;: GOTO 275
  52. 260  PRINT  TAB( T)A$(I);: HTAB 29: PRINT "$";:X$ =  STR$(T(I)/(159/2500)): GOSUB 525: HTAB (38 - LEN(X$)): PRINT X$
  53. 265  NEXT 
  54. 270  REM  KEYBOARD CONTROLS
  55. 275 X =  PEEK( -16384): IF X = 155  THEN  POKE  -16368,0: POKE  -16303,0: POKE  -16300,0: POKE  -16298,0: GOTO 275
  56. 280  IF X = 141  THEN  POKE  -16368,0: HIMEM: 38400:F$ = "TRAC PLUS": PRINT  CHR$(4)"RUN TRAC PLUS"
  57. 285  IF X = 160  THEN  POKE  -16368,0: POKE  -16297,0: POKE  -16304,0: POKE  -16302,0: POKE  -16299,0
  58. 290  GOTO 275
  59. 295  REM  GRAPH NUMBERS
  60. 300  FOR I = 1 TO 20:HL = 0
  61. 305  FOR J = 1 TO  LEN(DR$(I))
  62. 310 D$ =  MID$ (DR$(I),J,1)
  63. 315  IF D$ = " "  THEN 335
  64. 320 D =  VAL(D$)
  65. 325  IF D = 0  THEN D = 10
  66. 330  DRAW D AT HL,VLOC(I)
  67. 335 HL = HL +5
  68. 340  NEXT : DRAW 12 AT HL,VLOC(I)
  69. 345  NEXT 
  70. 350  RETURN 
  71. 355  REM  CATEGORIES
  72. 360 DR$(1) = "ABBCCDEEFGHHGMIILMTTTTVW":DR$(2) = "UOULLOLNOIOOAANNQTEAAAAA":DR$(3) = "TOSOONETOFBBSISVCGLXXXCT":DR$(4) = "OKITTACEDTBB N SGEELSFAR"
  73. 365 VL = 42
  74. 370 HL = 160: FOR I = 1 TO 4
  75. 375 HL = HL +5
  76. 380  FOR J = 1 TO  LEN(DR$(I))
  77. 385 D$ =  MID$ (DR$(I),J,1)
  78. 390  IF D$ = " "  THEN VL = VL +9: GOTO 405
  79. 395 D =  ASC(D$):D = D -52
  80. 400  DRAW D AT VL,HL:VL = VL +9
  81. 405  NEXT :HL = HL +2:VL = 42: NEXT : RETURN 
  82. 410  REM  READ FILES
  83. 415  FLASH : PRINT "READING ";F$;" FILE": NORMAL 
  84. 420  PRINT D$;"OPEN";F$;",L40"
  85. 425  PRINT D$;"READ";F$;",R0"
  86. 430  INPUT R
  87. 432  IF   NOT R  THEN 455
  88. 435  FOR X = 1 TO R
  89. 440  PRINT D$;"READ";F$;",R";X
  90. 445  INPUT W$(X,1),W$(X,2),W$(X,3),W$(X,4),W$(X,5),W$(X,6)
  91. 450  NEXT X
  92. 455  PRINT D$;"CLOSE";F$
  93. 460  RETURN 
  94. 465  FLASH : PRINT "READING YEAR-TO-DATE FILES": NORMAL 
  95. 470  PRINT D$;"OPEN BALANCES"
  96. 475  PRINT D$;"READ BALANCES"
  97. 480  FOR X = 1 TO 24: FOR N = 1 TO 12
  98. 485  INPUT BAL(X,N)
  99. 490  NEXT N,X
  100. 495  PRINT D$;"CLOSE BALANCES"
  101. 500 F$ = "CARD #": GOSUB 410: GOSUB 520
  102. 505 F$ = "CHECK #": GOSUB 410: GOSUB 520
  103. 510  FOR X = 1 TO 24: FOR N = 1 TO 12:B(X) = B(X) +BAL(X,N): NEXT N,X
  104. 515  RETURN 
  105. 520  FOR X = 1 TO R:WK(X,1) =  VAL(W$(X,1)):WK(X,2) =  VAL(W$(X,3)):WK(X,3) =  VAL(W$(X,5)):BAL(WK(X,1),WK(X,2)) = BAL(WK(X,1),WK(X,2)) +WK(X,3): NEXT : RETURN 
  106. 525  FOR Z = 1 TO  LEN(X$)
  107. 530  IF  MID$ (X$,Z,1) = "."  THEN 545
  108. 535  NEXT 
  109. 540 X$ = X$ +".00": RETURN 
  110. 545  IF Z =  LEN(X$) -2  THEN  RETURN 
  111. 550  IF Z =  LEN(X$) -1  THEN X$ = X$ +"0": RETURN 
  112. 555 X$ =  LEFT$(X$,Z +2): RETURN 
  113. 560  PRINT : PRINT D$"CLOSE":ER =  PEEK(222)
  114. 565  TEXT : HOME : VTAB 12
  115. 570  IF ER = 6  THEN  PRINT "FILE<";F$;"> NOT ON THIS DISK.": GOTO 585
  116. 575  IF ER = 8  THEN  PRINT "BAD DISK OR DRIVE ERROR.": GOTO 585
  117. 580  IF ER < >6  AND ER < >8  THEN  PRINT "ERROR NO.";ER;" OCCURRED IN LINE ";: PRINT  PEEK(218) + PEEK(219) *256
  118. 585  END